//package com.shop.cereshop.business.dl.logic.config;//package com.dl.logic.config;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.http.client.HttpClient;
//import org.apache.http.config.Registry;
//import org.apache.http.config.RegistryBuilder;
//import org.apache.http.conn.socket.ConnectionSocketFactory;
//import org.apache.http.conn.socket.PlainConnectionSocketFactory;
//import org.apache.http.conn.ssl.NoopHostnameVerifier;
//import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
//import org.apache.http.conn.ssl.SSLContextBuilder;
//import org.apache.http.conn.ssl.TrustStrategy;
//import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
//import org.apache.http.impl.client.HttpClientBuilder;
//import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
//import org.springframework.web.client.DefaultResponseErrorHandler;
//import org.springframework.web.client.RestTemplate;
//
//import javax.net.ssl.HostnameVerifier;
//import javax.net.ssl.SSLContext;
//import java.security.KeyManagementException;
//import java.security.KeyStoreException;
//import java.security.NoSuchAlgorithmException;
//import java.security.cert.CertificateException;
//import java.security.cert.X509Certificate;
//
///**
// *
// * 功能描述：设置RestTemplate
// *
// * @作者 YF 创建时间： 2021/5/20
// *
// */
//@Slf4j
//@Configuration
//public class RestTemplateConfig {
//    @Bean
//    public RestTemplate restTemplate() {
//        RestTemplate restTemplate = new RestTemplate();
//        restTemplate.setRequestFactory(clientHttpRequestFactory());
//        restTemplate.setErrorHandler(new DefaultResponseErrorHandler());
//        return restTemplate;
//    }
//
//    @Bean
//    public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() {
//        try {
//            HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
//            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
//                @Override
//                public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
//                    return true;
//                }
//            }).build();
//            httpClientBuilder.setSSLContext(sslContext);
//            HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
//            SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext,
//                    hostnameVerifier);
//            Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
//                    .register("http", PlainConnectionSocketFactory.getSocketFactory())
//                    .register("https", sslConnectionSocketFactory).build();// 注册http和https请求
//            // 开始设置连接池
//            PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(
//                    socketFactoryRegistry);
//            poolingHttpClientConnectionManager.setMaxTotal(2700); // 最大连接数2700
//            poolingHttpClientConnectionManager.setDefaultMaxPerRoute(100); // 同路由并发数100
//            httpClientBuilder.setConnectionManager(poolingHttpClientConnectionManager);
//            httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true)); // 重试次数
//            HttpClient httpClient = httpClientBuilder.build();
//            HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(
//                    httpClient); // httpClient连接配置
//            clientHttpRequestFactory.setConnectTimeout(20000); // 连接超时
//            clientHttpRequestFactory.setReadTimeout(30000); // 数据读取超时时间
//            clientHttpRequestFactory.setConnectionRequestTimeout(20000); // 连接不够用的等待时间
//            return clientHttpRequestFactory;
//        } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
//            log.error("初始化HTTP连接池出错", e);
//        }
//        return null;
//    }
//
//}